package com.ruoyi.basedata.service;

import java.util.List;

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.basedata.domain.Concentrator;
import com.ruoyi.basedata.domain.ElectricityConcentrator;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basedata.domain.vo.ConcentratorCommand;
import com.ruoyi.basedata.domain.vo.ConcentratorProtocol;
import com.ruoyi.basedata.domain.vo.ElectricityConcentratorProtocol;

/**
 * 电-集中器管理Service接口
 * 
 * @author gdqt
 * @date 2025-03-10
 */
public interface IElectricityConcentratorService extends IService<ElectricityConcentrator>
{
    /**
     * 查询集中器管理
     *
     * @param ID 集中器管理主键
     * @return 集中器管理
     */
    public ElectricityConcentrator selectConcentratorByID(Long ID);

    /**
     * 查询集中器管理列表
     *
     * @param concentrator 集中器管理
     * @return 集中器管理集合
     */
    public List<ElectricityConcentrator> selectConcentratorList(ElectricityConcentrator concentrator);

    public List<ElectricityConcentratorProtocol> selectConcentratorProtocolList(ElectricityConcentrator concentrator);

    /**
     * 新增集中器管理
     *
     * @param concentrator 集中器管理
     * @return 结果
     */
    public int insertConcentrator(ElectricityConcentrator concentrator);

    /**
     * 修改集中器管理
     *
     * @param concentrator 集中器管理
     * @return 结果
     */
    public int updateConcentrator(ElectricityConcentrator concentrator);

    /**
     * 批量删除集中器管理
     *
     * @param IDs 需要删除的集中器管理主键集合
     * @return 结果
     */
    public List<String> deleteConcentratorByIDs(Long[] IDs);

    /**
     * 删除集中器管理信息
     *
     * @param ID 集中器管理主键
     * @return 结果
     */
    public int deleteConcentratorByID(Long ID);


    JSONObject sendCommand(ConcentratorCommand concentratorCommand);

    JSONObject getCommandResult(ConcentratorCommand concentratorCommand);

    /**
     * 导入集中器
     *
     * @param list 集中器list
     */
    void importData(List<ElectricityConcentrator> list);

    /**
     * 集中器绑定户表
     *
     * @param concentratorId 集中器自增id
     * @param protocolId     协议id
     * @param terminalIds    户表自增id
     * @return 是否成功
     */
    boolean bindTerminalsXb(Long concentratorId, String protocolId, List<Long> terminalIds);
}
